﻿#region Using statements
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
#endregion

namespace SmartFrequency
{
    class Language
    {
        #region Public variables
        public enum FailureMsg_e
        {
            ERR_SOUNDDEVICE,
            ERR_NODEVICE,
            ERR_BUFFERS,
            ERR_STARTRECORDING,
            ERR_STOPRECORDING,
            ERR_STARTPLAYING,
            ERR_STOPPLAYING,
            ERR_RECORD,
            ERR_PLAY,
            ERR_SAVE,
            ERR_UNKNOWN,
            ERR_NOTVALIDFILE
        }

        public enum FormMsg_e
        {
            MENU1_TEXT = 0,
            MENU2_TEXT,
            MENU3_TEXT,
            MENU4_TEXT,
            MENU5_TEXT,
            MENU6_TEXT,
            MENU7_TEXT,
            MENU8_TEXT,

            MSGBOX_TEXT1,
            MSGBOX_TEXT2,

            // Form 0 (main form) items
            FORM0_LABEL1,
            FORM0_LABEL2,
            FORM0_LABEL3,
            FORM0_LABEL4,
            FORM0_LABEL5,

            // Form 1 (voice recorder) items
            FORM1_HEAD,
            FORM1_LABEL1,
            FORM1_LABEL2,

            // Form 2 (voice recorder settings) items
            FORM2_HEAD,
            FORM2_LABEL1,
            FORM2_LABEL2,
            FORM2_LABEL3,
            FORM2_LABEL4,
            FORM2_LABEL5,
            FORM2_LABEL6,

            // Form 3 (general settings) items
            FORM3_HEAD,
            FORM3_LABEL1,

            // Form 4 (frequency meter) items
            FORM4_HEAD,
            FORM4_LABEL1,
            FORM4_LABEL2,

            // Form 5 (about box) items
            FORM5_HEAD,
            FORM5_LABEL1,
            FORM5_LABEL2,

            // Form 6 (open file) items
            FORM6_HEAD,
            FORM6_LABEL1,
            FORM6_COMBOBOX1,
            FORM6_COMBOBOX2,

            // Form 7 (file manager settings) items
            FORM7_HEAD,
            FORM7_LABEL1,
            FORM7_LABEL2,

            // Form 8 (main settings) items
            FORM8_HEAD,

            // System messages
            UNDER_CONSTRUCTION
        }

        public enum Language_e
        {
            TR = 0,
            ENG
        }

        string[,] FrmMsg = {
                                  {
                                      // Menu items
                                      "Çıkış", "Ayarlar", "Hakkında", "Seçenekler", "Genel", "Ses Kayıt", "Kapat", "Sil",

                                      // Menu items
                                      "Uyarı", "Silmek istediğinizden eminmisiniz ?",

                                      // Form 0 (main form) items
                                      "Ses Kayıt", "Metronom",
                                      "Frekans Ölçümü", "Ayarlar",
                                      "Nefesten yüreğe",
                                      
                                      // Form 1 (main form) items
                                      "Ses Kayıt", "Dosya Adı :", "Süre :",

                                      // Form 2 (voice recorder settings) items
                                      "Ses Kayıt Ayarları", "Örnekleme Oranı :", "Örnek Bit Sayısı :", "Kanal Sayısı :",
                                      "Süre :", "Pencere Boyutu :", "Kayıt Adresi :",

                                      // Form 3 (general settings) items
                                      "Genel Ayarlar", "Dil :",

                                      // Form 4 (frequency meter) items
                                      "Frekans Ölçümü", "Frekans :", "Nota :", 

                                      // Form 5 (about box) items
                                      "Hakkında", "Bu program Bora Tunçer tarafından yazılmıştır", "Bu program telif hakkı kanunları veya uluslar arası anlaşmalarca korunmamaktadır. Bu programın veya bir parçasının izinsiz üretilmesi, kopyalanması veya dağıtılması hiçbir sivil veya cezai yaptırımına neden olmaz. Lütfen kullanmakta ve dağıtmakta çekinmeyiniz :)",

                                      // Form 6 (open file) items
                                      "Dosya Yöneticisi", "Dosya Tipi :", "Ses dosyaları", "Tüm dosyalar",

                                      // Form 7 (file manager settings) items
                                      "Dosya Yöneticisi Ayarları", "Dizinleri göster :", "Çift tıklama süresi :",

                                      // Form 8 (main settings) items
                                      "Ana Ayarlar",

                                      // System messages
                                      "Bu bölüm yapım aşamasındadır"
                                  },
                                  {
                                      // Menu items
                                      "Quit", "Settings", "About", "Options", "General", "Voice Recorder", "Close", "Delete",

                                      // Menu items
                                      "Warning", "Are you sure deleting this file ?",

                                      // Form 0 (main form) items
                                      "Voice Recorder", "Metronom",
                                      "Frequency Meter", "Settings",
                                      "From breath to hearth",

                                      // Form 1 (main form) items
                                      "Voice Recorder", "FileName :", "Duration :",

                                      // Form 2 (voice recorder settings) items
                                      "Voice Recorder Settings", "Sampling Rate :", "Bits Per Sample :", "Channel No :",
                                      "Duration :", "Window Size :", "Store Location :",

                                      // Form 3 (general settings) items
                                      "General Settings", "Language :",

                                      // Form 4 (frequency meter) items
                                      "Frequency Meter", "Frequency :", "Notes :",

                                      // Form 5 (about box) items
                                      "About", "This program is written by Bora Tunçer", "This program is not protected by copyright law or international treaties. Unauthorized reproduction or distribution of this program, or any portion of it, may not result civil and criminal penalties. Please feel free to use and distribute :)",

                                      // Form 6 (open file) items
                                      "File Manager", "File Type :", "Sound files", "All files",

                                      // Form 7 (file manager settings) items
                                      "File Manager Settings", "Display folders :", "Double click duration :",

                                      // Form 8 (main settings) items
                                      "Main Settings",

                                      // System messages
                                      "This part is under construction"
                                  }
                              };

        string[,] ErrMsg = {
                                  // TR error codes
                                  {
                                      "HATA : Ses kartı bulunamadı, program sonlandırılacak", 
                                      "HATA : Geçerli ses kartı bulunamadı",
                                      "HATA : Ara belleklerin ön yüklemesi yapılamadı",
                                      "HATA : Kayıt işlemine başlanamadı",
                                      "HATA : Kayıt işlemi durdurulamadı",
                                      "HATA : Oynatma işlemine başlanamadı",
                                      "HATA : Oynatma işlemi durdurulamadı",
                                      "HATA : Dosya kayıt edilemedi",
                                      "HATA : Dosya oynatılamadı",
                                      "HATA : Dosya kayıt edilemedi",
                                      "HATA : Bilinmeyen hata",
                                      "HATA : Gerçli bir ses dosyası değil"
                                  },
                                  // ENG error codes
                                  {
                                      "FAILURE : Could not find sound device, program will not run",
                                      "FAILURE : No valid sound drivers detected",
                                      "FAILURE : Unable to preload buffers", 
                                      "FAILURE : Unable to start recording",
                                      "FAILURE : Unable to stop recording",
                                      "FAILURE : Unable to start playing sound file",
                                      "FAILURE : Unable to stop playing sound file",
                                      "FAILURE : Unable to record file",
                                      "FAILURE : Unable to play file",
                                      "FAILURE : Unable to save file",
                                      "FAILURE : Un-know error",
                                      "FAILURE : Not a valid sound file"
                                  }
                              };
        #endregion

        #region Private variables
        Language_e WorkingLanguage;
        #endregion

        #region Public functions
        public Language(Language_e Lang)
        {
            WorkingLanguage = Lang;
        }

        public void SetLanguage(Language_e Lang)
        {
            WorkingLanguage = Lang;
        }

        public string ErrMsgToString(FailureMsg_e error)
        {
            return ErrMsg[(int)WorkingLanguage, (int)error];
        }

        public string FrmMsgToString(FormMsg_e msg)
        {
            return FrmMsg[(int)WorkingLanguage, (int)msg];
        }
        #endregion
    }
}
